/**
 * 用户模块：存储 token 个人信息
 */
import { loginApi, getUserInfoApi } from '@/api/user'
import { setToken, getToken, delToken } from '@/utils/auth'
export default {
  namespaced: true,
  // 定义变量
  state: {
    // 先从本地获取，获取不到就取值空
    token: getToken() || '',
    userInfo: {}
  },
  // 修改变量 （同步）
  mutations: {
    /**
     * 存储token
     * @param {*} state 所有变量（是个对象）
     * @param {*} payload 传入参数
     */
    // 设置token
    setToken (state, payload) {
      state.token = payload
      setToken(payload)
    },
    // 删除token
    delToken (state, payload) {
      delToken()
      state.token = ''
    },
    setUserInfo (state, payload) {
      state.userInfo = payload
    }
  },
  // 发送请求（异步）
  actions: {
    /**
     * @param {*} ctx 上下文
     * @param {*} payload   页面调用getTokenAction传入的参数
     */
    async getTokenAction ({ commit }, payload) {
      const { data } = await loginApi(payload)
      if (data.code === 0) {
        commit('setToken', data.token)
        // console.log(data.token)
      }
      // 给组件返回数据
      return data
    },
    async getUserAction ({ commit }, payload) {
      const { data } = await getUserInfoApi()
      console.log('用户数据', data)
      commit('setUserInfo', data.data)
    }
  }
}
